Spring Cloud 是什么？

	在学习本课程之前，读者有必要先了解一下 Spring Cloud。

	Spring Cloud是一个基于Spring Boot实现的云原生应用开发工具，
	它为基于JVM的云原生应用开发中涉及的配置管理、服务发现、熔断器、智能路由、微代理、控制总线、分布式会话和集群状态管理等操作提供了一种简单的开发方式。

	Spring Cloud 是一系列框架的有序集合，它利用 Spring Boot 的开发便利性简化了分布式系统的开发，比如服务发现、服务网关、服务路由、链路追踪等。
	Spring Cloud 并不重复造轮子，而是将市面上开发得比较好的模块集成进去，进行封装，从而减少了各模块的开发成本。
	换句话说：Spring Cloud 提供了构建分布式系统所需的“全家桶”。

Spring Cloud 现状

	目前，国内使用 Spring Cloud 技术的公司并不多见，不是因为 Spring Cloud 不好，主要原因有以下几点：

	Spring Cloud 中文文档较少，出现问题网上没有太多的解决方案。
	国内创业型公司技术老大大多是阿里系员工，而阿里系多采用 Dubbo 来构建微服务架构。
	大型公司基本都有自己的分布式解决方案，而中小型公司的架构很多用不上微服务，所以没有采用 Spring Cloud 的必要性。
	但是，微服务架构是一个趋势，而 Spring Cloud 是微服务解决方案的佼佼者。

Spring Cloud 优缺点

	其主要优点有：

		集大成者，Spring Cloud 包含了微服务架构的方方面面。
		约定优于配置，基于注解，没有配置文件。
		轻量级组件，Spring Cloud 整合的组件大多比较轻量级，且都是各自领域的佼佼者。
		开发简便，Spring Cloud 对各个组件进行了大量的封装，从而简化了开发。
		开发灵活，Spring Cloud 的组件都是解耦的，开发人员可以灵活按需选择组件。
	
	接下来，我们看下它的缺点：

		项目结构复杂，每一个组件或者每一个服务都需要创建一个项目。
		部署门槛高，项目部署需要配合 Docker 等容器技术进行集群部署，而要想深入了解 Docker，学习成本高。

Spring Cloud 的优势是显而易见的。因此对于想研究微服务架构的同学来说，学习 Spring Cloud 是一个不错的选择。

Spring Cloud和Spring Boot关系(面试问答)

	1.SpringBoot 专注于快速方便的开发单个个体微服务。(开发一个个的jar包)
	
	2.SpringCloud 是关注全局的微服务协调治理框架，它将SpringBoot开发的一个个单体微服务整合并管理起来，
	  为各个微服务之间提供:配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务。
	
	3.SpringBoot 可以离开 SpringCloud独立使用，开发项目，但是 SpringCloud 离不开 SpringBoot，属于依赖关系。
	
	4.SpringBoot 专注于快速方便的开发单个个体微服务，SpringCloud 关注全局的服务治理框架。

Spring Cloud核心子项目

	Spring Cloud Netflix：核心组件，可以对多个Netflix OSS开源套件进行整合，包括以下几个组件：
	Eureka：服务治理组件，包含服务注册与发现
	Hystrix：容错管理组件，实现了熔断器
	Ribbon：客户端负载均衡的服务调用组件
	Feign：基于Ribbon和Hystrix的声明式服务调用组件
	Zuul：网关组件，提供智能路由、访问过滤等功能
	Archaius：外部化配置组件
	Spring Cloud Config：配置管理工具，实现应用配置的外部化存储，支持客户端配置信息刷新、加密/解密配置内容等。
	Spring Cloud Bus：事件、消息总线，用于传播集群中的状态变化或事件，以及触发后续的处理
	Spring Cloud Security：基于spring Security的安全工具包，为我们的应用程序添加安全控制
	Spring Cloud Consul : 封装了Consul操作，Consul是一个服务发现与配置工具（与Eureka作用类似），与Docker容器可以无缝集成
......